package com.huluobo.a2109amvvmdemo.viewbinding;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;

import com.huluobo.a2109amvvmdemo.databinding.ActivityMainBinding;

/**
 * ViewBinding 总结:
 * 1.首先使用时,需要在app的build.gradle中开启开关ViewBinding{enable = true}
 * 2.开启后所有的xml文件都会对应的生成一个类,也就是由xml的文件名生成的驼峰命名法的实现类
 * 3.(重点) setContentView(activityMainBinding.getRoot()); 这个方法中不能直用layout的id,需要使用binding的root来指定布局
 * 4.viewBinding的特点,具有空安全性,视图(View)绑定会对视图(View)直接引用
 * 5.具有类型安全性,不需要进行指定类型或者强制转换,可以自动匹配xml文件中控件的类型
 */
public class MainActivity extends AppCompatActivity {
    private ActivityMainBinding activityMainBinding;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//        setContentView(R.layout.activity_main);

        //之前实例化控件的方式,findViewById,黄油刀
//        TextView mainText = (TextView)findViewById(R.id.main_text);
//        Button mainBtn = findViewById(R.id.main_btn);
//        EditText mainEd = findViewById(R.id.main_ed);
//
//        @BindView(R.id.main_text)
//        TextView mainText;

//        activityMainBinding  =DataBindingUtil.setContentView(R.layout.activity_main)

        activityMainBinding = ActivityMainBinding.inflate(getLayoutInflater());
        setContentView(activityMainBinding.getRoot());

        activityMainBinding.mainText.setText("123");
        activityMainBinding.mainEd.setHint("请输入文字");
        activityMainBinding.mainBtn.setOnClickListener(v -> {
            Intent intent = new Intent(this, MainActivity.class);
            startActivity(intent);
        });

        activityMainBinding.mainText.setOnClickListener(v -> {
            Intent intent = new Intent(this, MainActivity.class);
            startActivity(intent);
        });

    }
}